var MongcClient = require('mongodb').MongoClient
var express = require("express")
var app = express()
var assert = require("assert")
const config = require('../config/production')
//const config = require('../config/config')

function _connectDB(callback){
    var url ='mongodb://'+config.hostTx+'/'+config.database
    //连接数据库
    MongcClient.connect(url,function (err,db) {
        callback(err,db)
    })
}

//插入数据
exports.insertOne = function(collectionName,json,callback){
    _connectDB(function(err,db){
        db.collection(collectionName).insertOne(json,function (err,result) {
            callback(err,result)
            db.close()
        })
    })
}
//查找数据
exports.find=function (collectionName,json,sortJson,pageNows,callback) {
   var result = []
   let pageNow = parseInt(pageNows)-1
   let pageskip = pageNow * 10
    _connectDB(function (err,db) {
        var cursor = db.collection(collectionName).find(json).sort(sortJson).skip(pageskip).limit(10)
        cursor.each(function (err,doc) {
            assert.equal(err,null)
            if(err){
                callback(err,null)
                db.close()
                return
            }
            if(doc == null || doc == '' || doc == 'underfind'){
                callback(null,result)
            }else{
                result.push(doc)
            }
            db.close()
        })
    })
}

//查找数据无分页
exports.finded=function (collectionName,json,callback) {
    var result=[]
    _connectDB(function (err,db) {
        var cursor = db.collection(collectionName).find(json)
        cursor.each(function (err,doc) {
            assert.equal(err,null)
            if(err){
                callback(err,null)
                db.close()
                return
            }
            if(doc !=null){
                result.push(doc)  //放入结果数组

            }else{
                //遍历结束，没有更多的文档了
                callback(null,result)
            }
            db.close()
        })
    })
}
//删除
exports.deleteMany = function (collectionName,json,callback) {
    _connectDB(function (err, db) {

        db.collection(collectionName).deleteMany(
            json,
            function (err, results) {
                callback(err, results)
                db.close() //关闭数据库
            }
        )
    })
}
//修改
exports.updateMany = function (collectionName, json1, json2, callback) {
    _connectDB(function (err, db) {
        db.collection(collectionName).updateMany(
            json1,
            {$set:json2},
            function (err, results) {
                console.log(err)
                callback(err, results)
                db.close()
            })
    })
}
//获取总总数
exports.getAllCount = function (collectionName,callback) {
    _connectDB(function (err, db) {
        db.collection(collectionName).count({}).then(function(count) {
            callback(count)
            db.close()
        })
    })
}